//
//  ViewController.swift
//  MyWifi
//
//  Created by lvzhao on 2024/8/1.
//

import UIKit
import MZQRCode
import NetworkExtension

class ViewController: UIViewController {
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        
        // 创建一个按钮
        let button = UIButton(type: .system)
        button.frame = CGRect(x: 100, y: 100, width: 200, height: 50)
        button.setTitle("点击我", for: .normal)
        button.addTarget(self, action: #selector(buttonTapped), for: .touchUpInside)
        
        // 将按钮添加到视图中
        self.view.addSubview(button)
        // Do any additional setup after loading the view.
    }
    
    // 按钮点击时调用的方法
    @objc func buttonTapped() {
        
        NEHotspotConfigurationManager.shared.getConfiguredSSIDs { (ssids) in
            for ssid in ssids {
                print("已配置的Wi-Fi: \(ssid)")
            }
        }
        print("按钮被点击了！")
        MZQRCodeManager.scanQRCode { value in
            // 扫描结果: WIFI:S:deloitte;T:WPA;P:deloitte;
            if value.hasPrefix("WIFI") {
                
                // 调用函数并打印结果
                let (ssid, password) = self.extractInfoFromString(value)
                if let ssid = ssid, let password = password {
                    //首先，你需要创建一个NEHotspotConfiguration对象，并设置其SSID（Wi-Fi名称）、密码（如果Wi-Fi网络加密的话）以及加密类型（如WPA/WPA2）。
                    let configuration = NEHotspotConfiguration(ssid: ssid, passphrase: password, isWEP: false)
                    
                    // 配置额外的属性（如果需要）
                    configuration.joinOnce = false // 是否只连接一次，之后不再自动连接
                    
                    NEHotspotConfigurationManager.shared.apply(configuration) { (error) in
                        if let error = error {
                            print("连接失败: \(error.localizedDescription)")
                            // 处理连接失败的情况
                        } else {
                            print("连接成功")
                            // 处理连接成功的情况
                        }
                    }
                } else {
                    self.showAlert(value)
                }
            }
            else {
                self.showAlert(value)
            }
        }
        
    }
    
    func showAlert(_ value: String) {
        // 创建一个UIAlertController的实例
        // withTitle: 标题
        // message: 消息内容
        // preferredStyle: 样式，对于alert来说，使用.alert
        let alert = UIAlertController(title: "扫描结果", message: "\(value) 不符合规则", preferredStyle: .alert)
        
        // 添加一个操作（按钮）
        // UIAlertActionStyle: 按钮的样式，.default表示普通按钮
        // title: 按钮的标题
        // handler: 按钮点击时的回调
        let action = UIAlertAction(title: "确定", style: .default, handler: { (action) in
            // 在这里处理按钮点击后的逻辑
            print("用户点击了确定按钮")
        })
        
        // 将操作（按钮）添加到alert中
        alert.addAction(action)
        
        // 显示alert
        // 注意：在iOS 13及更高版本中，如果你是在UIViewController的上下文中，
        // 推荐使用present(alertController, animated: completion:)方法来显示alert
        // 第一个参数是alertController，第二个参数表示是否以动画形式展示，第三个参数是动画完成后的回调
        self.present(alert, animated: true, completion: nil)
    }
    
    func extractInfoFromString(_ str: String) -> (String?, String?) {
        let pattern = "S:([^;]+);.*P:([^;]+);.*"
        let regex = try! NSRegularExpression(pattern: pattern, options: [])
        let results = regex.matches(in: str, options: [], range: NSRange(str.startIndex..., in: str))
        
        guard let firstMatch = results.first,
              let rangeS = Range(firstMatch.range(at: 1), in: str),
              let rangeP = Range(firstMatch.range(at: 2), in: str) else {
            return ("", "")
        }
        
        let sValue = String(str[rangeS])
        let pValue = String(str[rangeP])
        
        return (sValue, pValue)
    }
}

